Review of QWEBS
by
Shawn M. Gordon
President SMGA
Introduction
You’ve heard all the talk about the World Wide Web (WWW), Internets, Intranets, etc., your pretty sure it’s something you should be doing something about, but you have no idea what how to set one up, and don’t want to deal with either Unix or Windows NT to do it. If any of these things sound familiar, then you will want to check out this review.
I ran tests of QWEBS on both 4.0 and 5.0 of MPE/iX. I used Internet Explorer and Netscape Navigator under Windows 3.1 as web browsers.
Features
If you don’t know what the Internet and the World Wide Web are, then go read “Internet for Dummies” first, then come back to this review. It may suprise you to find out that there are actually four different web servers available on the HP 3000. There is the free NCSA port available on HP’s JAZZ web site, which has a fair number of limitations, but is fun to prototype with. There is the commercial Open Market web server which HP is selling directly for pretty hefty amount if memory serves. Recently it was announced that the Apache web server had been ported to the HP 3000, which is also available for free, and I have heard good things about. The main drawback to all of these is that they run under POSIX. This brings us to the fourth web server, and the subject of this review.
QWEBS is a web server written in COBOL, and teeny bit of Pascal, that runs on the HP 3000, under MPE, no POSIX required. QWEBS is offered by Quintessential School Systems (QSS), and is a nice piece of work, mostly designed to be used as an Intranet (Internal network), but can just as easily be used to put your HP 3000 on the Internet.
Figure 1 shows the default home page that comes with QWEBS, as you can see it demostrates a number of the features that are available with the software. By looking at the examples that are supplied you will notice that QWEBS supports both GET and POST for Forms, and that you can do it either with a program (in this case COBOL), or with standard MPE command files using standard MPE conventions ($stdin/$stdlist).
All of these samples do the exact same thing, but in different ways. See figure 2 for the sample screen, and figure 3 for the results of the POST, which is what we are doing in this case. Some of the nice features that QSS has included allow the ability to call XL routines via CGI, and CGI extensions to pre-parse the data for easier script writing. QWEBS will also allow you to either map unix style directory/names to MPE file names, or you can use HFS directories, whatever makes you happy.
QWEBS has implemented a pretty full featured security system as well. You have directory, document, and connection IP address security, as well as standard WWW authentication support. Don’t get too excited about the authentification support though, this isn’t SSL, it’s just a way to password pages so only certain users have access to them.
In conjunction with this you have extended logging capabilities that let you query what has happened. The biggest problem with the program for viewing the logs is the complete lack of documentation. The doc tell’s you what program to run, but not how to answer the prompts. The documentation does give you very clear COBOL record layouts for the structure of the file so you can write your own query or extract type of program. Figure 4 has an example of the output from the log record.
A nice performance feature of QWEBS is it’s ability to pre-create a pool of process servers for faster start up and execution. Basically you can configure how many you want out there, they are then all ‘created’ as child processes, but not actived until needed. As soon as one get’s used up, another one is created and left unactivated to take it’s place.
There is a ton of configuration stuff that you can take advantage of if you want too, the product is fully configurable for every site you may want to run, and with just about every option you could think of.
Usability (also installation)
Installation is standard, restore, stream, done, kind of thing. Everyone seem’s to have standardized on this method these days.
QWEBS is almost too easy, I keep thinking I am missing something. Really all you have to do is fire off the job that run’s the server, and build your HTML files. It’s actually a little disorienting because I am so use to having to jump all over the place to put a web site together (at least without using all the new fangled fancy schmancy tools that are available now).
Reliability
I probably didn’t leave the web server running long enough or hit it often enough to tell what it does with it extremely heavy traffic, but I can tell you there was absolutely no problems with the testing I did. The server always picked up the connection and handed it off to it’s own process thread correctly, and nothing aborted. High marks for a solid product.
Performance
Man/woman (gotta be politcally correct) is this thing fast. I have a copy of the freeware NCSA web server for the HP 3000, and it just drags next to this thing. I could not believe how quickly my web browser came up, and pages displayed in it. After fighting the increasing slow down of the internet, it was nice to be able to bounce around at full speed.
Impact on system performance was so slight it was almost impossible to measure. Given the ability to run standard programs as part of the CGI, I imagine you could cause problems by launching some big report that was doing serial reads, but that is going to be the fault of your application, not QWEBS.
Supportability (including Doc)
Support is very good from QSS, you can use all sorts of methods to contact them, and they are good about responding quickly. My only real complaint here is that I don’t think I ever actually got a voice on the phone the first try, but the response from the voice mail was always quick.
The documentation is included as an HTML file. This is good and bad, it’s nice to have it online, and use the hypertext links to jump to the chapters, but it’s no fun to print unless you have a good printer. Fortunatly I have a good printer, so printing the slim 39 pages wasn’t a problem.
The manual is well written in general, and is rather fun to read. They start off by talking about what QWEBS is, why they wrote the product, and exactly how the environment is configured. This is more than I ever got from Microsofts IIS. There seems to be plenty of examples, but some of them are rather terse. I think I would have liked to see a walk through of adding a command file to the CGI, as well as an executable program, and an XL routine.
Summary
I want to start my wrap up by proposing a new way to refer to the World Wide Web. First, saying “World Wide Web” is cumbersome, second, saying “WWW” is almost as cumbersome, and annoying when you are giving someone a URL. So I propose taking a piece of the new WB network (you know, dubba dubba dubba u b), and a math term and call it “Dubba Cube”. What do you think? If we all get behind it, we could change the world of network computing as we know it. Ok, ok, here is my summary.
This is one heck of a deal, sure it’s not as cheap as the free Microsoft Internet Information Server, but then again you don’t have to buy a new computer with a $1,000 operating system to run it. This web server is a piece of cake to set up, run, and integrate with. I have done a couple of web sites under Unix and Windows, and this has been the easiest one by far.
About the only thing I can think of that I would like to have in the product now is a nice interface as an administrative feature. Something that let’s you query the current log, get statistics, configure the environment, etc., other than that I can’t find any fault with the product. It’s zippy, easy to use, and the drain on your 3000 seems to be fairly negligible. This is worth getting even if all you want to do is learn how to set up a web site, at least you only have to learn about the web, and not a new operating system and a bunch of other stuff too. A really cool idea would be to get it up on your 3000, put your 3000 on the internet, and then write a bunch of scripts and programs to let you manage your 3000 over the internet. I know I would find this to be pretty useful
At-a-Glance box
QWEBS version A.01.00
Quintessential School Systems
1000 Marshall Suite C
Redwood City CA 94063
Phone 415-306-1600
FAX 415-365-2706
email: duane@qss.com
http://www.qss.com/
Call, write, fax, email, or download your free demo. Software is $495, additional copies are $250, the first year maintenance is free, $95 per year thereafter. 39 page HTML document for the manual.
Figure 4 QLOG A.01.01 compiled 11/07/96 Log id? log LOG opened: LGTR0000.log >? Valid Commands Are ------------------ conv - Convert server hits to WWW format date - Set base date err - Display HTTP errors exit - Exit program hdr - Display log header entries help - This help message hit - Display server hits log - Change log association msg - Display log messages sum - Summary report of server hits time - Set base time ver - Verify settings 'help parms' or 'help cmd-name' can be used to display the syntax of all or specific commands Use ':' for executable MPE commands >sum Accumulating totals. Please be patient... Summary for period: 1996/12/20 to 1997/01/28 Grand Totals Total Hits 37 Bytes read 12144 Bytes transmitted 216150 CPU Init (ms) 3580 CPU Request (ms) 2045 Detail by IP Address %Hits %Bytes Bytes Sent Hits IP Address ------ ------ ------------ -------- --------------- 100.00 100.00 216150 37 198.246.183.84 >hdr Type PIN Date Time IP Address Port ---- ----- ---------- ----------- --------------- ----- 0 0 1996/12/20 12:58:31.40 0.0.0.0 0 100 508 1996/12/20 12:59:20.40 198.246.183.84 0 101 508 1996/12/20 12:59:20.40 198.246.183.84 0 102 508 1996/12/20 12:59:20.40 198.246.183.84 0 >hit PIN Date Time Remote Address/Request ----- ---------- ---------- --------------------------------------------------- 376 1997/01/28 13:05:55.0 198.246.183.84 GET home.html 280 1997/01/28 13:05:57.5 198.246.183.84 GET ballg.gif 379 1997/01/28 13:08:16.5 198.246.183.84 GET getcmd.html 317 1997/01/28 13:08:28.4 198.246.183.84 GET(bin) testcmd.cgi 355 1997/01/28 13:09:37.6 198.246.183.84 GET getprg.html 279 1997/01/28 13:09:47.4 198.246.183.84 GET(bin) testprg.cgi 164 1997/01/28 13:10:03.2 198.246.183.84 GET postprg.html 579 1997/01/28 13:10:12.1 198.246.183.84 POST(bin) testprg.cgi 227 1997/01/28 13:26:14.4 198.246.183.84 POST(bin) testprg.cgi 397 1997/01/28 13:30:09.4 198.246.183.84 GET order.html >